package com.burningtower.controller.converter;

import org.springframework.core.convert.converter.Converter;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Pattern;

//实现Converter接口
public class MyDateConverter implements Converter<String, Date> {

    //重写convert方法
    @Override
    public Date convert(String str) {
        SimpleDateFormat sdf=null;
        //java正则表达式不用写/开头和结尾，js中需要
        Pattern pattern1= Pattern.compile("^\\d{4}年\\d{1,2}月\\d{1,2}日$");
        Pattern pattern2=Pattern.compile("^\\d{4}-\\d{2}-\\d{2}\\s\\d{2}:\\d{2}:\\d{2}$");
        Pattern pattern3=Pattern.compile("^\\d{4}/\\d{2}/\\d{2}$");
        Pattern pattern4=Pattern.compile("^\\d{4}-\\d{2}-\\d{2}\\+\\d{2}:\\d{2}:\\d{2}$");
        try {
            if(pattern1.matcher(str).matches()){
                sdf=new SimpleDateFormat("yyyy年MM月dd日");
                return sdf.parse(str);
            }
            if(pattern2.matcher(str).matches()){
                sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                return sdf.parse(str);
            }
            if(pattern3.matcher(str).matches()){
                sdf=new SimpleDateFormat("yyyy/MM/dd");
                return sdf.parse(str);
            }
            if(pattern4.matcher(str).matches()){
                sdf=new SimpleDateFormat("yyyy-MM-dd+HH:mm:ss");
                return sdf.parse(str);
            }
            //或者下面的写法
            /*if(str.matches("^\\d{4}年\\d{2}月\\d{2}日$")){
                sdf=new SimpleDateFormat("yyyy年MM月dd日");
                return sdf.parse(str);
            }
            if(str.matches("^\\d{4}-\\d{2}-\\d{2}$")){
                sdf=new SimpleDateFormat("yyyy-MM-dd");
                return sdf.parse(str);
            }
            if(str.matches("^\\d{4}/\\d{2}/\\d{2}$")){
                sdf=new SimpleDateFormat("yyyy/MM/dd");
                return sdf.parse(str);
            }*/
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
